using System;
using System.ComponentModel;
using System.Collections.Generic;

using Sinacor.Servico.Bovespa.Ordens.BusinessEntity;
using Sinacor.Servico.Bovespa.Cliente.BusinessEntity;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator
{
    public static class TranslateBetweenOrdemMegaBolsaAndConsultarOrdemMegaBolsaResponse
    {
        public static Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.ConsultarOrdemMegaBolsaResponse 
            TranslateOrdemMegaBolsaToConsultarOrdemMegaBolsaResponse
            (Sinacor.Servico.Bovespa.Ordens.BusinessEntity.OrdemMegaBolsa from)
        {
            Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.ConsultarOrdemMegaBolsaResponse 
                to = new Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.ConsultarOrdemMegaBolsaResponse();
            to.Operador = from.Operador;
            to.NomeOperador = from.NomeOperador;
            to.DataOrdem = from.DataOrdem;
            to.Numero = from.NumeroOrdem;
            to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            to.Situacao = from.Situacao;
            to.NumeroOrdemOriginal = from.NumeroOrdemOriginal;
            //to.Seq = from.Seq; //excluido - Eduardo Sertorio - 20071130
            to.Mercado = (DataContract.Enum.TipoMercado?) from.TipoMercado;
            to.TipoOrdem = from.TipoOrdem;
            to.PercentualReducaoAcrescimo = from.PercentualReducaoAcrescimo;
            to.TipoFax = from.TipoFax;
            to.PessoaVinculada = from.PessoaVinculada;
            to.ContaMae = from.ContaMae;
            to.Carteira = from.Carteira;
            to.TipoLiquidacaoOrdem = (DataContract.Enum.TipoLiquidacao) from.TipoLiquidacao;
            to.AnexoIV = from.AnexoIV;
            to.AnexoV = from.AnexoV;
            to.Preco = from.Preco;
            to.DataValidade = from.DataValidade;
            to.NaturezaOperacao = (DataContract.Enum.TipoNaturezaOperacao?) from.NaturezaOperacao;
            to.Titulo = from.Titulo;
            to.Quantidade = from.Quantidade;
            to.Saldo = from.Saldo;
            to.Bolsa = from.Bolsa;
            to.QuantidadeCasada = from.QuantidadeCasada;
            to.LimitePreco = from.LimitePreco;
            to.ValorOrdem = from.ValorOrdem;
            //incluido - ini - Eduardo Sertorio - 20071129
            to.CodigoCliente = from.Cliente.Codigo;
            to.ApelidoCliente = from.Cliente.Apelido;
            //incluido - fim - Eduardo Sertorio - 20071129
            //incluido - Eduardo Sertorio - 20071207
            to.IndicadorOrdemFilaCasamento = from.IndicadorOrdemFilaCasamento;
            //incluido - Eduardo Sertorio - 20080102
            to.NomeCliente = from.Cliente.Nome;
            //incluido - Eduardo Sertorio - 20080103
            to.ComplementoNomeCliente = from.Cliente.ComplementoNome;
            //incluido - Eduardo Sertorio - 20080118
            to.TipoSituacaoCasamentoOrdem = (Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Enum.TipoSituacaoCasamento) from.TipoSituacaoCasamentoOrdem;
            return to;
        }

        public static
        List<DataContract.Response.ConsultarOrdemMegaBolsaResponse>
        TranslateOrdemMegaBolsaListToConsultarOrdemMegaBolsaResponseList
        (List<BusinessEntity.OrdemMegaBolsa> from)
        {
            List<DataContract.Response.ConsultarOrdemMegaBolsaResponse>
                to = new List<DataContract.Response.ConsultarOrdemMegaBolsaResponse>();

            foreach (BusinessEntity.OrdemMegaBolsa fromItem in from)
            {
                to.Add(Translator
                    .TranslateBetweenOrdemMegaBolsaAndConsultarOrdemMegaBolsaResponse
                    .TranslateOrdemMegaBolsaToConsultarOrdemMegaBolsaResponse(fromItem));
            }
            return to;
        }
    }
}

